Nginx系列<一>配置介绍一>
Nginx安装部署和常用基本命令介绍。介绍平滑重启、平滑升级等操作。
前言
本文主要记录nginx的学习笔记,方便自己和他人使用时查阅~
Nginx安装部署
下载Nginx源代码
根据系统类型从官网下载对应版本的Nginx点我下载。Window版本的Nginx服务器在效率上比Linux差一些,并且通常Nginx在实际生产环境中都是基于Linux/Unix系统,所以本文使用Linux系统,Nginx版本为1.10.1。下载Nginx后解压,主要的目录描述如下:
- conf 目录中存放的nginx的配置文件,主要的nginx.cnf文件就在此目录
- man 目录存放的nginx服务器的文档资料,包含nginx服务器的LICENSE、OpenSSL的LICENSE等,以及Nginx等帮助文档和readme。
- logs 目录存放的nginx服务器的运行日志文件。
- html 目录存放两个.html后缀结尾的默认文件。
- sbin 目录存放nginx的运行程序
- src 目录存放Nginx所有的源代码
- auto 目录中存放大量的自动脚本
- configure 文件是Nginx软件的自动脚本程序
Linux下编译和安装Nginx
一般Nginx有两种安装方式,yum安装和源码包安装
这里先说明下 yum
和 源码包
安装的 区别:
yum
安装是在线安装,好处是:安装方式简单,不易出错;直接使用命令yum -y install nginx
安装即可源码包
安装是先将nginx
的源码下载下来,自己编译生成可执行文件,然后执行,好处是:因为是在自己的系统上编译的,更符合自己系统的性能,也就是说在自己的系统上执行nginx
服务性能效率更好。
所以下文主要介绍用源码包安装方式Nginx,源代码的编译需要使用configure自动脚本生产Makefile文件。在生成makefile文件之前,需要先了解configure脚本支持的几个常用选项。(图片来源:Nginx高性能web服务器详解)
了解了configure的常用选项后,就可以按照你的具体需求生成Makefile文件了。一般使用最多的就是--prefix啦,用于指定Nginx的安装目录,默认为/usr/local/nginx,其他参数一般都默认。
这里将使用以下命令将Nginx编译在/data/nginx目录。
1 | ./configure --prefix=/data/nginx |
这时会输出一堆日志,基本上没报错就ok,这里会根据您系统的性能编译nginx,生成Makefile文件。
使用make && make install 编译安装Nginx。
1 | make && make install |
输入/data/nginx/sbin/nginx -v 查看nginx版本号即安装成功。
Nginx服务的启动和停止
安装完Nginx后,下面接着就可以启动了,启动的方式有很多。如果你使用yum安装的话,会安装成server,使用service nginx start
即可启动。本文介绍使用源码方式安装,启动方式为:/data/nginx/sbin nginx
启动没报错就ok了。这里需要注意的是,如果你是非root用户启动,可能会出现这个问题:
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
这是因为非root用户无权限监听80端口。解决办法有两种:
- 通过sudo启动
sudo /data/nginx/sbin nginx
- 修改nginx.conf配置文件中监听的端口为1024以上。
通过
/data/nginx/sbin nginx -h
可以查看到nginx的相关用法;
关于nginx的停止,我觉得有必要强调一下。
停止Nginx的方法有两种:一种是快速停止,一种是平缓停止。快速停止是指立即停止当前所有网络请求(包含正在处理中的)。平缓停止允许Nginx将处理完当前所有请求,但是不再接受新请求,之后再关闭连接。/data/nginx/sbin nginx -g TERM | INT | QUIT
TERM 和INT是快速停止,QUIT是用于平缓停止
Nginx nginx.conf配置文件详解
nginx.conf文件的结构
- 全局块
顾名思义全局块是在全局范围生效的,通常包含的配置有nginx访问用户,pid存放目录,日志存放目录,允许生成的work process数量等。 - events块
events块通常配置nginx服务器的用户、生成的worker process数量、日志及PID存放的目录等等。 - http块
http块主要配置文件引入、MIME-Type定义,日志格式定义、超时设置、最大请求数等等。 - server块
定义localhost结构为:localhost [ = | ~ | ~ | ^~ ] uri ( … )
uri为待匹配的字符串,可以包含有正则表达式的字符串,成为正则uri,不包含正则表达式的uri为标准uri。
方括号里面为可选项,用来确定uri的匹配方式。主要含义是:=
:用于标准uri,表示对uri进行严格匹配,如果匹配成功,就停止继续向下搜索。~
:用于正则uri,表示uri中包含正则表达式,并且区分大小写~*
:用于正则uri,表示uri中包含正则表达式,并且不区分大小写
*^~
:用于标准uri前,表示Nginx服务器找到标识uri和请求字符串匹配度最高的localhost后,立即使用此localhost处理请求,不在继续向下搜索注意,如果uri中有正则表达式,必须使用~或~*标识
下图nginx.conf文件示例:
参考文档:Nginx高性能web服务器详解